package projetolp2.Tests;

import java.util.ArrayList;
import java.util.List;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import projetolp2.Sistem.*;

public class testaUsuario {
	
	private Usuario umUsuario;
	
	@Before
	public void criaUsuario() throws Exception{
		
		List<OpinioesDeUsuarios> outrosVotos = new ArrayList<OpinioesDeUsuarios>();
		outrosVotos.add(OpinioesDeUsuarios.DETESTO);
		Opiniao umaOpiniao = new Opiniao("27/05/2011","Mayra",outrosVotos);
		umUsuario = new Usuario("Mayra", umaOpiniao);
	}
	
	@Test
	public void testGets(){
		
		Assert.assertEquals("Nome de usuario nao corresponde ao esperado!", umUsuario.getNome(),"Mayra");
		List<OpinioesDeUsuarios> outrosVotos = new ArrayList<OpinioesDeUsuarios>();
		outrosVotos.add(OpinioesDeUsuarios.DETESTO);
		Assert.assertEquals("Opinioes de usuario nao corresponde ao esperado!",umUsuario.getOpiniao().getVotos(), outrosVotos);
	}
	
	@Test
	public void testSets() throws Exception{
		
		umUsuario.setNome("Kelly");
		Assert.assertEquals("Nome de usuario mudado errado!",umUsuario.getNome(),"Kelly");
		List<OpinioesDeUsuarios> mudandoVotos = new ArrayList<OpinioesDeUsuarios>();
		mudandoVotos.add(OpinioesDeUsuarios.RUIM);
		Opiniao umaOpiniao = new Opiniao("21/05/2011","Mayra",mudandoVotos);
		umUsuario.setOpiniao(umaOpiniao);
		Assert.assertEquals("Opiniao de usuario mudada errada!", umUsuario.getOpiniao(),umaOpiniao);
		
	}
	
	@Test 
	public void testConstrutor(){
		
		try{
			new Usuario("Mayra",null);   
		}catch(Exception e){
			Assert.assertEquals("Opiniao de usuario errado!","Opiniao do usuario nao pode ser vazio ou nulo!",e.getMessage());
		}
		
	}
	
	@Test
	public void testEquals(){
		
		Assert.assertTrue(!umUsuario.equals(null));
		Assert.assertEquals(umUsuario, umUsuario);
		
	}
	
	@Test
	public void testToString(){
		Assert.assertEquals("ToString errado!","Nome: Mayra Data: 27/05/2011 Votos: [DETESTO]", umUsuario.toString());
	}

}
